package robots.domain;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import robots.excepcions.DineroInsuficienteException;

/**
 * 
 * @author morellatoariel
 * 
 */
public class Jugador implements Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = -1585766539378010924L;
	private String nombre;
	private Integer dinero;
	private List<Robot> robots;

	public Jugador(String nombre, Integer dinero) {
		this.nombre = nombre;
		this.dinero = dinero;
		this.robots = new ArrayList<Robot>();
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public Integer getDinero() {
		return dinero;
	}

	public void setDinero(Integer dinero) {
		this.dinero = dinero;
	}

	public List<Robot> getRobots() {
		return robots;
	}

	public void setRobots(List<Robot> robots) {
		this.robots = robots;
	}

	public void cobrar(Integer monto) throws DineroInsuficienteException {
		if (monto > this.dinero) {
			throw new DineroInsuficienteException();
		} else {
			this.dinero -= monto;
		}
	}

	public void pagar(Integer monto) {
		this.dinero += monto;
	}

	public boolean alcanzaElDineroPara(Integer dinero) {
		return this.getDinero() >= dinero;
	}

	public void agregarRobot(Robot robot) {
		this.getRobots().add(robot);
	}

	public void quitarRobot(Robot robot) {
		this.getRobots().remove(robot);
	}

	public void comprarMejora(MejoraDeRobot mejora) throws DineroInsuficienteException {
		int costo = mejora.getPrecio();
		if (this.getDinero() < costo) {
			throw new DineroInsuficienteException();
		}
		this.cobrar(costo);
	}

	public void vendisteRobot(Robot robot) {
		this.robots.remove(robot);
	}
}
